package 经典排序;

import com.alibaba.fastjson.JSON;

import java.util.Arrays;
import java.util.Comparator;

public class No179最大数 {

    /**
     * 给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
     * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
     *
     * 示例 1：
     * 输入：nums = [10,2]
     * 输出："210"
     * 示例 2：
     * 输入：nums = [3,30,34,5,9]
     * 输出："9534330"
     * 示例 3：
     * 输入：nums = [1]
     * 输出："1"
     * 示例 4：
     * 输入：nums = [10]
     * 输出："10"
     *  
     * 提示：
     * 1 <= nums.length <= 100
     * 0 <= nums[i] <= 109
     */

    public String largestNumber(int[] nums) {

        String arr[]=new String[nums.length];

        for (int i = 0; i < nums.length; i++) {
            arr[i]=""+nums[i];
        }

        Arrays.sort(arr,(o1,o2)-> (o2+o1).compareTo(o1+o2));

        StringBuilder stringBuilder=new StringBuilder();

        for (String s : arr) {
            if(stringBuilder.length()==0&&s.equals("0")){
                continue;
            }
            stringBuilder.append(s);
        }

        String result=stringBuilder.toString();

        return result.length()==0?"0":result;
    }

    public static void main(String[] args) {
        Integer[] arr={5,3,2,4,12,4,52};
        //!!!Arrays.sort()工具方法不可用于基本类
        Arrays.sort(arr,(o1,o2)->o2-o1);
        System.out.println(JSON.toJSONString(arr));
    }

}
